/* let num = 3
let arr = ['abcabc', 'abcab','aababc']
// let arr = new Array(num).fill('')
for(let i = 0; i < num; i++){
    // arr[i] = read_line()
    let res = judge(getVal(Find(arr[i])))
    console.log(getVal(Find(arr[i])))
    console.log(res)
}
//body
// 统计每个字符串中字符的出现次数
function Find(str){
    return obj = str.split('').reduce((pre,cur,index,arr)=>{
        if(pre[cur]){
            pre[cur]++
        }else{
            pre[cur] = 1
        }
        return pre
    },{})
}
// 将对象中的值都提取出来,进行排序
function getVal(obj){
    return Object.values(obj).sort((a,b)=>(b - a))
}
// 判断一个数组是否是等差数列
function judge(arr){
    let res = true
    if(arr.length <= 1){
        res = false
    }else{
        let d = arr[1] - arr[0]
        for(let i = arr.length - 1; i > 0; i--){
            if((arr[i] -arr[i - 1]) !== d){
                res = false
                console.log(i,(arr[i] -arr[i - 1]),d)
                break
            }
        }
    }
    return res
} */


// 动态规划问题，转换成求以n开头的最长递减子序列（非连续）

let num = 7
let arr = [1,2,3,7,4,5,6]

let res = new Array(num ).fill(1)
// res[n]表示以n开头的最长递减子序列的值
for(let i = num - 2; i >=0; i--){
    // debugger
    res[i] = getMax(arr[i],i,arr,res)
    
}
res.sort((a,b)=>(a - b))
console.log(res)
console.log(res[num - 1])
function getMax(num,index,arr,res){
    let max = 1
    let temp = []
   	// 过滤出来小于当前值的值，将其的res保存下来
    for(let i = index;i < arr.length; i++){
        if(num > arr[i + 1]){
            temp.push(res[i + 1])
             //max = res[i + 1] + 1
             //break
        }
        else{
            
        }
    }
    temp.sort((a,b)=>(a - b))
    if(!temp.length) return max
    max = temp[temp.length - 1] + 1
    return max
}